package com.xr.core.system.entity.permissionModule;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.xr.core.system.common.base.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 总后台 权限表(Permission)表实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Permission extends BaseEntity {

    private static final long serialVersionUID = 1230827138380963259L;

    /**
     * 父级id 用于展示作用 最顶级默认为0
     */
    @JsonProperty("pId")
    private Long parentId;

    /**
     * 权限展示名称
     */
    private String label;

    /**
     * 后台权限控制使用的名称
     */
    private String code;

    /**
     * 图标
     */
    @JsonProperty("img")
    private String icon;

    /**
     * 访问时的url
     */
    private String url;

    /**
     * 是否显示 用于页面是否在菜单中显示
     */
    @JsonProperty("show")
    private Boolean display;

    /**
     * 排序
     */
    @JsonProperty("order")
    private Integer sort;

    /**
     * 是否为内置权限
     */
    @JsonProperty("init")
    private Boolean initial;

    /**
     * 是否启用 1 启用 0 禁用
     */
    @JsonProperty("ena")
    private Boolean enable;

    /**
     * 页面类型 ,菜单类型 还是接口类型 还是按钮类型 控制显隐和访问  page  menu  button  api
     */
    private String type;

    @JsonProperty("pChild")
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private List<Permission> pChild;

}

